Anno accademico 2011/2012
Docente:
Camillo Fiorentini
Home page
Avvisi
Nell'anno accademico 2012/13 il corso di Laboratorio
di Programmazione 1 sarà tenuto dal dott.
Massimo Santini .
Modalità d'esame
L'esame consiste in una prova individuale pratica da svolgersi
nel laboratorio didattico
SILab
di via Comelico 39.
La prova consiste nello svolgere 4 o 5 esercizi
(programmi da scrivere)
in ambiente Linux con interfaccia a linea di comandi; il tempo massimo
è in genere 4 ore.
Se si è superata la prova in laboratorio,
segue da una prova orale obbligatoria
(discussione degli esercizi svolti).
- Per sostenere l'esame di laboratorio
è necessario iscriversi
tramite
SIFA.
L'esame di Laboratorio di Programmazione 1
ha una sua propria lista di iscrizione, distinta da quella
di Programmazione 1.
-
Le iscrizioni si chiudono circa una settimana
prima della data dell'appello.
Controllare su SIFA che l'iscrizione
sia stata registrata (in caso di problemi contattare la segreteria didattica).
-
In caso di impossibilità a presentarsi all'esame,
occorre cancellarsi tramite SIFA
oppure, se le iscrizioni sono già chiuse, contattando il docente.
Le assenze non segnalate verranno considerate come prove sostenute
con esito negativo (e quindi comportano il salto d'appello).
- Durante la prova è possibile utilizzare esclusivamente il libro di testo
(oppure un manuale di C)
e accedere al
materiale di supporto
appositamente predisposto.
Si consiglia di portare all'esame una copia stampata delle istruzioni.
- Le macchine saranno configurate in modo tale che siano utilizzabili solamente
gli strumenti necessari per la programmazione (editor, terminale,
compilatore, browser solo per accedere al materiale di supporto).
Date appelli per l'esame in laboratorio
mar 31 gennaio, mar 14 febbraio, mar 28 febbraio, lun 11 giugno, mer 4 luglio, mar 18 settembre.
Vale la regola del salto d'appello:
-
è possibile sostenere al massimo due fra i tre appelli
programmati nei mesi gennaio-febbraio.
-
Se nell'appello di giugno si consegue una votazione negativa,
non è possibile sostenere l'appello di luglio.
Ricevimento
Nel mio ufficio, via Comelico 39
(ufficio S.202 al secondo piano, corridoio sopra l'ingresso del Dipartimento)
su appuntamento
(fiorentini@di.unimi.it).
NOTA
Quando si scrive a un docente, usare l'indirizzo di posta di ateneo
(della forma nome.cognome@studenti.unimi.it).
Indicare sempre il proprio nome e cognome.
Materiale relativo alle lezioni
-
14 ottobre - Laboratorio 1
Introduzione al corso. Introduzione all'uso di Linux:
file system, le nozioni di pathname assoluto e relativo, principali comandi.
Per un'introduzione a Linux, si può fare riferimento alla
Introduzione a GNU/Linux
del Prof. Santini
Il primo programma:
stampa.c.
Testo dell'esercizio.
Nota
Per poter svolgere la prova d'esame in laboratorio, è
necessario saper usare almeno i seguenti comandi:
pwd (print working directory),
ls (list directory contents),
cd (change directory),
cp (copy files),
mv (move/rename files),
rm (remove files).
-
21 ottobre - Laboratorio 2
Struttura di un programma. Variabili e assegnamenti.
Input e output con printf e scanf.
Esercizi
da svolgere in laboratorio (e completare a casa).
Alcune soluzioni:
es3.c,
es4.c,
es5.c.
Esercizi del libro: progetti 2.5, 2.7; esercizi 3.4, 3.5 (per verificare il comportamento
di scanf scrivere degli opportuni programmi).
-
28 ottobre - Laboratorio 3
Istruzioni di selezione if, if-else, switch.
Espressioni.
Esercizi
da svolgere in laboratorio (e completare a casa).
Alcune soluzioni:
es2.c,
es3.c,
es5.c.
Esercizi del libro: progetti 5.5, 5.9.
-
4 novembre - Laboratorio 4
Cicli (istruzione while, istruzione for).
Esercizi
da svolgere in laboratorio (e completare a casa).
Alcune soluzioni:
es1.c,
es2.c,
es3.c,
es6.c.
Esercizi del libro: progetti 6.2, 6.11, 6.12.
-
11 novembre - Laboratorio 5
Tipi interi. Lettura e scrittura di caratteri
usando getchar e putchar.
Esercizi
da svolgere in laboratorio (e completare a casa).
Alcune soluzioni:
alfabeto.c,
word.c.
Esercizi del libro: progetti 7.5, 7.10, 7.11.
-
18 novembre - Laboratorio 6
Array. Definizione di macro. Rappresentazione di interi positivi
(per approfondire,
dispense
del
Prof. Boldi).
Esercizi
da svolgere in laboratorio (e completare a casa).
Alcune soluzioni:
intToB8.c,
intToB16.c.
Esercizi del libro: progetti 8.1, 8.2, 8.7, 8.17 (difficile).
-
25 novembre - Laboratorio 7
Definizione e chiamata di funzioni.
Redirezione standard input (sul libro l'argomento è trattato al Cap. 22).
Esercizi
da svolgere in laboratorio (e completare a casa).
Alcune soluzioni:
amici.c.
Esercizi del libro: esercizio 9.6, progetto 9.8.
-
2 dicembre - Laboratorio 8
Passaggio dei parametri per indirizzo mediante puntatori.
Esercizi
da svolgere in laboratorio (e completare a casa).
Alcune soluzioni:
analisi esercizio 1
(pdf),
calc.c.
Esercizi del libro: esercizi 11.1, 11.2, 11.5.
-
16 dicembre - Laboratorio 9
Puntatori e array.
Esempi (pdf).
Esercizio da svolgere in laboratorio:
somma di interi positivi.
Soluzione parte1.c.
Esercizi del libro: esercizi 9.10, 9.11, 9.12, 9.14, 11.3, 11.6, 11.8.
-
13 gennaio - Laboratorio 10
Stringhe, allocazione dinamica della memoria.
Esempi (pdf).
Esercizio da svolgere in laboratorio:
libretto dello studente.
Soluzione (parziale): libretto.c.
Esercizi del libro: esercizi 13.3, 13.7, 13.10, 13.12, 13.17, progetto 13.1.
-
20 gennaio - Laboratorio 11
Strutture, deallocazione della memoria con funzione free
.
Esempi (pdf).
Esercizio da svolgere in laboratorio:
registro delle prenotazioni.
-
25 gennaio - Laboratorio 12
Esercizi di ripasso.
Tabella delle occorrenze.
Cifrario di Cesare.
Libro di testo di riferimento
Il libro di testo adottato è lo stesso usato nel corso di
Programmazione 1
(K.N. King,
C Programming - A Modern Approach,
second edition, eventualmente nell'edizione italiana).
Software
Il principale strumento utilizzato
è un compilatore, nel corso si farà riferimento al
gcc, compilatore della
GNU.
- ogni distribuzione GNU/Linux
lo include già;
- anche Mac OS X lo include,
è sufficiente installare gli Apple Development Tools (scaricabili gratuitamente);
- sotto Windows si può usare ad esempio il
software
proposto dall'università del Colorado;
in alternativa è possibile installare Cygwin,
una sorta di emulatore per Windows degli strumenti GNU.
Inoltre, sarà necessario un editor di testo, come ad esempio:
Camillo Fiorentini